package com.huifaapp.mall.api;


import com.huifaapp.mall.base.bean.BaseBean;
import com.huifaapp.mall.bean.BaseBeans;
import com.huifaapp.mall.bean.GoodsDateBean;
import com.huifaapp.mall.bean.ShareImageBean;
import com.huifaapp.mall.bean.UploadImagBean;
import com.huifaapp.mall.bean.UserBean;

import java.util.List;

import io.reactivex.Observable;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Url;

public interface ApiService {
    //http://192.168.199.107:8083/market/mobile/login/in

    /**
     * 注册
     *
     * @param invitingCode
     * @param openid
     * @param unionId
     * @param userHeadImg
     * @param userNickName
     * @return
     */
    @FormUrlEncoded
    @POST("login/reg.ph")
    Observable<BaseBean<UserBean>> reg(@Field("invitingCode") String invitingCode, @Field("openid") String openid,
                                       @Field("unionId") String unionId,
                                       @Field("userHeadImg") String userHeadImg,
                                       @Field("userNickName") String userNickName);

    /**
     * 登录
     *
     * @param unionId
     * @return
     */
    @FormUrlEncoded
    @POST("login/in.ph")
    Observable<BaseBeans<UserBean>> login(@Field("unionid") String unionId,@Field("appId") String appId, @Field("userHeadImg") String userHeadImg
            , @Field("userNickName") String userNickName);

    /**
     * 获取支付宝签名

     * @return
     */
    @FormUrlEncoded
    @POST("zhifubao/pay.ph")
    Observable<BaseBean<String>> getAlipaySign(@Field("orderId") String orderId,@Field("token") String token);
    /**
     * 获取支付宝签名
     *
     * @return
     */
    @FormUrlEncoded
    @POST("alipay/pay.ph")
    Observable<BaseBeans<String>> getAlipaySigns(@Field("orderNo") String orderNo, @Field("token") String token, @Field("appId") String appId);
    /**
     * 获取微信支付签名
     * @param orderId
     * @param token
     * @return
     */
    @FormUrlEncoded
    @POST("zhifubao/pay.ph")
    Observable<BaseBeans<String>> getWXPaySign(@Field("orderId") String orderId,@Field("token") String token);

    @GET("users/{user}/repos")
    Observable<BaseBean<String>>  listRepos(@Path("user") String user);

    @FormUrlEncoded
   @POST
    Observable<BaseBean<String>> getWXP(@Url String url,@Field("orderId") String orderId);
    @FormUrlEncoded
   @POST("zhifubao/{canyi}/pay.ph")
    Observable<BaseBean<String>> getWX(@Path("canyi")String canyi,@Field("orderId") String orderId);



    /**
     * 获取分享出去的图片
     * @param token
     * @param id
     * @return
     */
    @FormUrlEncoded
    @POST("share/batch.ph")
    Observable<BaseBeans<ShareImageBean>> getShareImage(@Field("token") String token,@Field("appId") String appId, @Field("spuIds") String id);
    /**
     * 接口名称 商品详情接口
     * @param
     * @return
     */
    @FormUrlEncoded
   @POST("product/detail.ph")
    Observable<BaseBean<GoodsDateBean>> getGoodsDate(@Field("productId")String productId);

    /**
     * 评价
     * @param
     * @return
     */
    @FormUrlEncoded
   @POST("order/feedback.ph")
    Observable<BaseBean<String>> evaluationGoods(@Field("content")String content,
                                                 @Field("imageUrls")String imageUrls,
                                                 @Field("orderProductsId")String orderProductsId,
                                                 @Field("starDegree")String starDegree,
                                                 @Field("token")String token);

    /**
     * 上传头像
     */
    @Multipart
    @POST
    Observable<UploadImagBean> uploadMemberIcon(@Url String url, @Part List<MultipartBody.Part> partList);


    //1.2照片提交
    @Multipart
    @POST
    Observable<UploadImagBean>
    upLoad(@Url String url,@Part("file\"; filename=\"avatar.png") RequestBody file);
//    @GET("news/latest")
//    Observable<ApiBean> getLatestZhihuDaily();
//    @GET("news/latest")
//    Observable<BaseBean<ApiBean>>getLatest250();
    // @GET注解的作用:采用Get方法发送网络请求

    // getCall() = 接收网络请求数据的方法
    // 其中返回类型为Call<*>，*是接收数据的类（即上面定义的Translation类）
    // 如果想直接获得Responsebody中的内容，可以定义网络请求返回值为Call<ResponseBody>
//    @FormUrlEncoded
//    @POST("appsfenlei/selectSFenleiTwo.ph")
//    Observable<BaseBean<List<CategoryBean>>>getClassify(@Field("fflid") String fflid);
//
//    @FormUrlEncoded
//    @POST("appsfenlei/selectAllSFenleiByFfidOrNameForPage.ph")
//    Observable<BaseBean<BaseListDataModel<CourseListBean>>>getCourseList(@Field("fflid") String fflid
//            , @Field("type") String type, @Field("page") String page);
}